#include "File_Manage.h"

//************************************
// Method:    	File_Status_Check		文件状态检测函数（核查文件状态并根据文件状态判断系统状态）
// Programmer:  lww
// Time:		2018/12/22
// Returns:   	bool					true-成功；false-失败
//************************************
bool File_Status_Check()
{
#define WRONG_DEAL(name)	if(false == (name)) { return false; }

	bool SAMA_File_Exist_Flg = false;
	bool DATA_File_Exist_Flg = false;
	SAMA_File_Exist_Flg = File_Exist_Check(SAMA_FILE_PATH);
	DATA_File_Exist_Flg = File_Exist_Check(DATA_FILE_PATH);

	//< 系统状态为主站
	if (SYS_Role == Master_Alone_Role || SYS_Role == Master_Twins_Role)
	{
		if (SAMA_File_Exist_Flg && DATA_File_Exist_Flg)	//< SAMA和DATA两个文件都存在
		{
			SYS_Status_Turn(Forbid_Commend_Status);	//< 切换系统状态为禁止命令下发
			printf("File_Status_Check:SAMA and DATA file both exist\r\n");
			WRONG_DEAL(File_Read());
		}
		else if (!SAMA_File_Exist_Flg && !DATA_File_Exist_Flg)	//< SAMA和DATA两个文件都不存在
		{
			SYS_Status_Turn(File_Wait_Status);	//< 切换系统状态为等待文件
			printf("File_Status_Check:SAMA and DATA file both unexist\r\n");
		}
		else	//< 只存在一个文件
		{
			Del_File(SAMA_FILE_PATH);
			Del_File(DATA_FILE_PATH);
			SYS_Status_Turn(File_Wait_Status);	//< 切换系统状态为等待文件
			printf("File_Status_Check:SAMA and DATA only exist one\r\n");
		}
	}

	//< 系统状态为从站  (从站的文件通过主站FTP传送过来)
	if (SYS_Role == Slave_Role)
	{
		if (DEL_FILE_STATION_START == true) 
		{
			//< Shike20210516 开机已经删了一遍就不用再删一遍了吧。。。
		}
		else 
		{
			Del_File(SAMA_FILE_PATH);
			Del_File(DATA_FILE_PATH);
		}		
		SYS_Status_Turn(File_Wait_Status);	//< 切换系统状态为等待文件
	}
	return true;
#undef WRONG_DEAL
}

//************************************
// Method:    	PowerOnDeleteAllFile	开机后删除所有文件，原来是在File_Manage_Func里的，现在提前到建立主从串口身份判断线程之前，也就是提前到了main的最开头
// Programmer:  shike
// Time:		2021/5/16
// Returns:   	void					
//************************************
void PowerOnDeleteAllFile()
{	//< 开机删除所有文件
	if (DEL_FILE_STATION_START == true)
	{
		ExactDelay(1000);
		Del_File(SAMA_FILE_PATH);
		Del_File(DATA_FILE_PATH);
		Del_File(TEMP_FILE_PATH);
	}
	return;
}
//************************************
// Method:    	File_Manage_Func		系统文件管理函数
// Programmer:  lww
// Time:		2019/3/21
// Returns:   	bool					true-成功；false-失败
//************************************
bool File_Manage_Func()
{
#define WRONG_DEAL(name)	if(false == (name)) { return false; }
	//< 文件系统建立：判断并建立mytffs、ram0等文件夹
	WRONG_DEAL(Path_Create(DOWN_FILE_PATH));				//< duan 0724 在mytffs(/home/lww/mytffs)文件夹中存放上位下发的数据库文件、SAMA文件

	//< Shike20210516 原来PowerOnDeleteAllFile()的内容是在这儿，现在单独移到一个更早执行的函数
	//< 核查文件状态并根据文件状态判断系统状态
	WRONG_DEAL(File_Status_Check());
	return true;
#undef WRONG_DEAL
}
